package ar.com.arkios.kfconsap.tablas;


import ar.com.arkios.kfconmodelo.modelo.Orden;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 */
public class OrdenDAO extends GenericSAPDAO {
    //Atributos

    private List<Orden> misOrdenes;
    //Constructores
    public OrdenDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("T_ORDENES");
        super.setMyTable(aFunction);  
        this.misOrdenes = new ArrayList<Orden>();
    }
    
    /**
     * Columnas de Ordenes:
     * ORDEN		ZORDEN		CHAR	10	Orden de 10 caracteres
     * MATERIAL		ZMATERIAL	CHAR	10	Material de 10 posiciones
     * ZESPECIE		ZZESPECIE	CHAR	4	Especie de frutas
     * ZVARIEDAD	ZZVARIEDAD	CHAR	4	Variedad de frutas
     * ZENVASE		ZZENVASE	CHAR	6	Envase de frutas.
     * ZMARCA		ZMARCA          CHAR	4	marce material
     * ZCALIDAD		ZZCALIDAD	CHAR	4	Calidad de la fruta
     * CANTIDAD		MENGE_D		QUAN	13	Cantidad
     * CAJAS_X_PLT	ZBLTXPALL	NUMC5           bultos por pallet
     * EMBALAJE		ZZEMBALAJE	CHAR	8	Condición de embalaje de la fruta
     * FECHA_INI	CO_FTRMI	DATS	8	Fecha de liberación real
     * FECHA_FIN	CO_GLTRP	DATS	8	Fecha fin extrema
     */


    @Override
    public void findAll() throws SapGeneralException {
        Orden aOrden;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i); 
                aOrden=new Orden(super.getMyTable().getString("ORDEN"),super.getMyTable().getString("MATERIAL"),super.getMyTable().getString("ZESPECIE"), super.getMyTable().getString("ZVARIEDAD"), super.getMyTable().getString("ZENVASE"), super.getMyTable().getString("ZMARCA"), super.getMyTable().getString("ZCALIDAD"), super.getMyTable().getBigDecimal("CANTIDAD").intValue(), super.getMyTable().getInt("CAJAS_X_PLT"), super.getMyTable().getString("EMBALAJE"),super.getMyTable().getDate("FECHA_INI"),super.getMyTable().getDate("FECHA_FIN"));
                addOrden(aOrden);
            }
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
            
            
        }
        
    }

    /**
     * Solo para las pruebas
     */
    @Override
    public void printAll() {
        System.out.println("ORDEN"+'\t'+"MATERIAL"+'\t'+"ZESPECIE"+'\t'+"ZVARIEDAD"+'\t'+"ZENVASE"+'\t'+"ZMARCA"+'\t'+"ZCALIDAD"+'\t'+"CANTIDAD"+'\t'+"CAJAS_X_PLT"+'\t'+"EMBALAJE"+'\t'+"FECHA_INI"+'\t'+"FECHA_FIN");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("ORDEN")  +
            '\t' + super.getMyTable().getString("MATERIAL") +
            '\t' + super.getMyTable().getString("ZESPECIE") +
            '\t' + super.getMyTable().getString("ZVARIEDAD") +
            '\t' + super.getMyTable().getString("ZENVASE") +
            '\t' + super.getMyTable().getString("ZMARCA") +
            '\t' + super.getMyTable().getString("ZCALIDAD") +
            '\t' + super.getMyTable().getString("CANTIDAD") +
            '\t' + super.getMyTable().getString("CAJAS_X_PLT") +
            '\t' + super.getMyTable().getString("EMBALAJE") +
            '\t' + super.getMyTable().getString("FECHA_INI") +
            '\t' + super.getMyTable().getString("FECHA_FIN") 
            );                
        }
    }

    private void addOrden(Orden aOrden) {
        this.misOrdenes.add(aOrden);
    }

    public List<Orden> getMisOrdenes() {
        return misOrdenes;
    }



}
